/**
 * 获取当日、本周、本月、近三月、近半年、近一年的开始日期、结束日期
 */
var now = new Date(); // 当前日期
var nowDayOfWeek = now.getDay(); // 今天本周的第几天
var nowDay = now.getDate(); // 当前日
var nowMonth = now.getMonth(); // 当前月
var nowYear = now.getYear(); // 当前年
nowYear += (nowYear < 2000) ? 1900 : 0; //

var lastMonthDate = new Date(); // 上月日期
lastMonthDate.setDate(1);
lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
var lastYear = lastMonthDate.getYear();
var lastMonth = lastMonthDate.getMonth();

var DateUtils = function() {
	// 格式化日期：yyyy/MM/dd
	this.formatDate = function(date) {
		var myyear = date.getFullYear();
		var mymonth = date.getMonth() + 1;
		var myweekday = date.getDate();

		if (mymonth < 10) {
			mymonth = "0" + mymonth;
		}
		if (myweekday < 10) {
			myweekday = "0" + myweekday;
		}
		return (myyear + "/" + mymonth + "/" + myweekday);
	}

	// 获得某月的天数
	this.getMonthDays = function(myMonth) {
		var monthStartDate = new Date(nowYear, myMonth, 1);
		var monthEndDate = new Date(nowYear, myMonth + 1, 1);
		var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
		return days;
	}

	// 获得本季度的开始月份
	this.getQuarterStartMonth = function() {
		var quarterStartMonth = 0;
		if (nowMonth < 3) {
			quarterStartMonth = 0;
		}
		if (2 < nowMonth && nowMonth < 6) {
			quarterStartMonth = 3;
		}
		if (5 < nowMonth && nowMonth < 9) {
			quarterStartMonth = 6;
		}
		if (nowMonth > 8) {
			quarterStartMonth = 9;
		}
		return quarterStartMonth;
	}

	// 获得当天的日期
	this.getCurrentDate = function getCurrentDate() {
		var currentDate = new Date();
		return this.formatDate(currentDate);
	}

	// 获得本周的开始日期
	this.getWeekStartDate = function() {
		var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1);
		return this.formatDate(weekStartDate);
	}

	// 获得本周的结束日期
	this.getWeekEndDate = function() {
		var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek + 1));
		return this.formatDate(weekEndDate);
	}

	// 获得本月的开始日期
	this.getMonthStartDate = function() {
		var monthStartDate = new Date(nowYear, nowMonth, 1);
		return this.formatDate(monthStartDate);
	}

	// 获得本月的结束日期
	this.getMonthEndDate = function() {
		var monthEndDate = new Date(nowYear, nowMonth, this.getMonthDays(nowMonth));
		return this.formatDate(monthEndDate);
	}

	// 获得上月开始时间
	this.getLastMonthStartDate = function() {
		var lastMonthStartDate = new Date(nowYear, lastMonth, 1);
		return this.formatDate(lastMonthStartDate);
	}

	// 获得上月结束时间
	this.getLastMonthEndDate = function() {
		var lastMonthEndDate = new Date(nowYear, lastMonth, this.getMonthDays(lastMonth));
		return this.formatDate(lastMonthEndDate);
	}

	// 获得本季度的开始日期
	this.getQuarterStartDate = function() {
		var quarterStartDate = new Date(nowYear, this.getQuarterStartMonth(), 1);
		return this.formatDate(quarterStartDate);
	}

	// 获得本季度的结束日期
	this.getQuarterEndDate = function() {
		var quarterEndMonth = getQuarterStartMonth() + 2;
		var quarterStartDate = new Date(nowYear, quarterEndMonth, this.getMonthDays(quarterEndMonth));
		return this.formatDate(quarterStartDate);
	}

	// 获取近三个月的开始日期
	this.getThreeMonthsStartDate = function() {
		var threeMonthsStartDate = new Date(now.setMonth(nowMonth + 3));
		return this.formatDate(threeMonthsStartDate);
	}

	// 获取近半年的开始日期
	this.getHalfYearStartDate = function() {
		var halfYearStartDate = new Date(now.setMonth(nowMonth + 6));
		return this.formatDate(halfYearStartDate);
	}

	// 获取近一年的开始日期
	this.getOneYearStartDate = function() {
		var oneYearStartDate = new Date(now.setMonth(nowMonth + 12));
		return this.formatDate(oneYearStartDate);
	}
}